指定要执行的SQL语句
    设置SQL属性指定要执行的SQL语句。在设计期间,只要把Active属性设为True,就会自动执行SQL语句。在运行期间,首先要调用Prepare通知服务器,然后调用Open或ExecSQL执行SQL语句。
    SQL属性本身是一个TStrings对象,是一个字符串数组和一系列属性,事件,方法的集合。SQL属性可以分成几行写,TQuery构件会自动把几行字符串合并成一条可执行的SQL语句。把SQL语句分成几行写的好处是,可以把SQL语句分割成几个“逻辑单元”,逻辑结构比较清楚,有利于今后维护和调试。因此,SQL语句的SELECT部分和WHERE部分一般都不在同一行上。
    SQL语句可以不带参数,把字段名称和值固定在SQL语句中。SQL语句也可是一个参数化查询,其中包含有可在执行时指定替换值的参数。例如,下面这个SQL语句就是硬写(Hard-Coded)的:
    SELECT * FROM Customer WHERE CustNo = 1231

    “硬写”语句对那些需要执行确定的,每次运行已知的查询是非常有用的。在设计期间或者运行期间,可以很容易地使用另外一个“硬写”语句或者参数化查询代替原来的“硬写”语句。每当SQL属性发生变化的时候,查询自动关闭。
    注意:如果要查询的是本地数据库(使用BDE引擎),并且SQL语句中的字段名包含空格或其他特殊符号,必须用引号括起来,前面还要加上数据表名称和小圆点。

    如果用参数的话,查询就灵活得多。使用参数查询,应用程序不需要改写SQL语句本身,只要修改参数的值,就能使SQL语句执行不同的查询功能。在执行SQL语句之前,TQuery构件会自动把实际的值替换SQL语句中的参数,即使并没有显式地调用Prepare函数。
    下面这条SQL语句是典型的参数化查询:
    SELECT * FROM Customer WHERE CustNo = :Number

    其中,Number就是一个参数,它的前面必须加冒号。在运行期间,应用程序必须提供Number参数的值,每次执行SQL语句时,Number参数的值可以不同。
    实际赋给Number参数的值是通过TQuery的Params属性提供的。


    技巧:最好把参数的名称和实际字段的名称设置为相同

    可参看:
    在设计期间指定SQL属性
    在运行期间指定SQL属性

RainBow策划制作 版权所有